/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Merlion.MRP.bean;

import Merlion.MRP.entity.UnplannedMaterialRequirementEntity;
import Merlion.MRP.entity.WeeklyMaterialRequirementEntity;
import javax.ejb.Remote;
import Merlion.util.state.BillOfMaterialState;
import Merlion.util.state.MaterialRequirementState;
import java.util.Date;
import java.util.List;

@Remote
public interface MaterialManagementBeanRemote {

    // Bill of Materials Manipulation
    public void createBillOfMaterial(Long productId, int batchSize, String unit);

    public void updateBillOfMaterial(Long productId, int batchSize, String unit);

    public void deleteBillOfMaterial(Long productId);

    public void createBOMEntry(Long productId, Long ingredientId, double quantity, String unit);

    public void deleteBOMEntry(Long entryId);

    public void updateBOMEntry(Long entryId, Long ingredientId, double quantity, String unit);

    public BillOfMaterialState viewProductBillOfMaterial(Long productId);

    // Material Requirement Planning
    public String createWeeklyMaterialRequirementByProduct(String pwdId, Date requestedOn);

    public void updateWeeklyMaterialRequirementByProduct(String wmrId, String remarks, String status, Double BOMmultiplier);

    public void deleteWeeklyMaterialRequirementByProduct(String wmrId);

    public void generateIndividualWeeklyMaterialRequirement(String weeklyMaterialRequirementId);

    public void updateIndividualWeeklyMaterialRequirement(String id, int requiredAmount, String status, String remarks);
 
    public UnplannedMaterialRequirementEntity createUnplannedMaterialRequirement(Long unplannedDailyDemandId, Date requestedOn, String remarks, String status);

    public void deleteUnplannedMaterialRequirement(Long id);
    
    public List<MaterialRequirementState> viewMaterialRequirementByWeekOfMonth(Integer yearInt, Integer monthInt, Integer weekOfMonth);

    public Merlion.util.state.MRPRecordState viewMRPRecord(java.lang.Long materialId, java.lang.Integer yearInt, java.lang.Integer monthInt);

    public String getLotSizeUnit(Long materialId);
}
